In some computing networks, shared computing resources are provided to computing systems and other devices connected to the network, on demand, by way of deploying one or more virtual machines (VMs). A VM, generally, runs as a software application and supports the related services to provide a platform-independent programming environment that abstracts away details of the underlying hardware or operating system for the party requesting the respective services.
VMs are typically provided by a management layer being part of the network architecture. The management layer downloads VM images from a remote repository to a local storage medium that is shared with the virtualization platform. The management layer then deploys the VM by executing the image stored at the locally shared storage medium. In this network architecture, the virtualization hosting platform is a passive recipient of the VM image until the point in time when the image is remotely deployed by the management layer.
Accordingly, the initial responsibility for VM provisioning and deployment has been traditionally assigned to the management layer. The virtualization platform's primary function is to provide an abstraction of physical resources to the remotely located management layer. It is desirable to allocate storage for VM provisioning at the virtualization platform host level, especially when the management layer is not well suited to exploit host-level services and techniques such as local caching or near storage VM cloning.